package main

import "fmt"

func main() {

	c := make(chan int)

	go func() {
		for i := 0; i < 5; i++ {
			c <- i
		}
		//close可以关闭一个channel
		//关闭之后不能再发送数据到通道了 会报错send on closed channel
		//关闭之后 可以继续从channel中接收数据
		//对于nil channel 无论收发都会被阻塞
		close(c)
	}()

	for {
		if data, ok := <-c; ok {
			fmt.Println(data)
		} else {
			break
		}

	}

	fmt.Println("main finished")
}
